package org.example.ag_notes.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
 * 资源未找到异常（对应HTTP 404状态码）
 * 当查询不存在的资源时抛出
 */
@ResponseStatus(HttpStatus.NOT_FOUND)
public class NotFoundException extends RuntimeException {

    /**
     * 默认构造方法
     */
    public NotFoundException() {
        super("请求的资源不存在");
    }

    /**
     * 带自定义消息的构造方法
     * @param message 异常详细信息
     */
    public NotFoundException(String message) {
        super(message);
    }

    /**
     * 带原因异常的构造方法
     * @param message 异常详细信息
     * @param cause 原始异常
     */
    public NotFoundException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 带资源ID的构造方法（推荐使用）
     * @param resourceName 资源类型（如"用户"、"文章"）
     * @param id 资源ID
     */
    public NotFoundException(String resourceName, Object id) {
        super(String.format("%s[id=%s]不存在", resourceName, id));
    }
}